package com.hsnn.medstgmini.base.std.service;

import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.base.std.model.BidDrugcatas;
import com.hsnn.medstgmini.base.std.model.StdDrugQualitySpecLog;
import com.hsnn.medstgmini.base.std.model.StdDrugcatalog;
import com.hsnn.medstgmini.base.std.model.StdDrugcatalogLog;
import com.hsnn.medstgmini.util.Pagination;


public interface StdDrugcatalogManager {

	/**
	 * @category 新增药物目录
	 * @author 应晓川
	 * @param stdDrugcatalog
	 * @return
	 */
	public void save(StdDrugcatalog stdDrugcatalog);
	
	/**
	 * @category 根据目录名称获取药物目录[新增和编辑时做验证]
	 * @author 应晓川
	 * @param stdDrugcatalog
	 * @return
	 */
	public List<StdDrugcatalog> getStdDrugcatalogByName(String drugcatalogName);
	
	/**
	 * @category 更新药物目录【编辑】
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	public void update(StdDrugcatalog stdDrugcatalog);
	
	/**
	 * @category 更新
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	public void update(Object entity);
	
	/**
	 * @category 更新药物目录【批量启用/停用】
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	public void updateStatus(Pagination page);

	
	/**
	 * @category 查询药物目录列表
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	Pagination getStdDrugcatalogList(Pagination page);
	
	/**
	 * @category 获取药物目录详情数据
	 * @author 应晓川
	 * @date 2015年8月19日08:41:15
	 * @return
	 * @return Pagination
	 */
	Pagination getStdDrugcatalogDetailInfo(Pagination page);
	
	/**
	 * @category 获取未关联药物目录的品规数据
	 * @author 应晓川
	 * @date 2015年8月19日08:49:53
	 * @return
	 * @return Pagination
	 */
	Pagination getStdDrugcatalogDetailInfoAdd(Pagination page);
	
	
	/**
	 * @category 查询药物目录日志列表
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	Pagination getStdDrugcatalogLogList(Pagination page);
	Pagination getStdDrugcatalogLogLists(Pagination page);
	Pagination getDrugcatalogDetailNoPages(Pagination page);
	
	/**
	 * @category 根据key-value确定一条数据
	 * @author 应晓川
	 * @param entity 要查询的实体对象
	 * @param key 对象中某一字段
	 * @param value 对象中某一字段的值
	 * @return
	 */
	public Object getUniquerResult(Class<?> entity,String key,String value);
	
	/**
	 * @category 保存对象
	 * @author 应晓川
	 * @return
	 */
	public boolean save(Object entity);
	
	
	/**
	 * @category 批量添加明细
	 * @author 应晓川
	 * @param page
	 * @return
	 */
	public void AddStdDrugcatalogDetailInfo(Pagination page);
	
	
	/**
	 * @category 对比日志
	 * @author 应晓川
	 * @return
	 */
	public StdDrugcatalogLog compareStdDrugcatalogLog(StdDrugcatalogLog stdDrugcatalogLog);
	
	String  getNameByUpdUser(String updUser);
	
	/**
	 * @category 更新药品目录关联表
	 * @author zhouqi
	 * @date 2015年9月24日09:57:34
	 * @param bidDrugCates
	 */
	void updateBidDrugCatas(BidDrugcatas bidDrugCates);
	
	/**
	 * @category 获取药品目录关联信息
	 * @author zhouqi
	 * @date 2015年9月24日09:57:34
	 * @param bidDrugCates
	 */
	BidDrugcatas getBidDrugCatas(String bidDrugCatesId);

	Pagination getDrugcatalogDetailNoPage(Pagination page);
	
	/**
	 * 药物目录维护记录详情
	 * @param page
	 * @return
	 */
	List<Map<String,Object>> getStdDrugcatalogLogDetail(StdDrugcatalogLog stdDrugcatalogLog);
	
	
}
